package main

import "fmt"

/*
	defer关键字：
		-在go语言中，程序遇到defer关键字，不会立即执行defer后的代码，而是将defer后的语句压入栈中，然后再执行后面语句
		-栈的特点：先进后出
		-函数执行完毕后，从栈中去除语句开始执行，按照先进后出的原则执行语句
*/

func main() {
	fmt.Println(add(12, 23))
}
func add(n1 int, n2 int) int {
	defer fmt.Println("n1:", n1)
	defer fmt.Println("n2:", n2)
	// n1,n2值的变化不会影响压入栈的n1，n2的值
	n1 += 20
	n2 += 12
	var sum int = n1 + n2
	fmt.Println("sum:", sum)
	return sum
}
